package main

//
//import (
//	"encoding/json"
//	"fmt"
//)
//
//type Person struct {
//	Name string `json:"name"`
//	Age  MyAge  `json:"age"` // 使用自定义类型
//}
//
//// MyAge 是一个自定义类型，底层类型是 int
//type MyAge int
//
//func (m *MyAge) UnmarshalJSON(data []byte) error {
//	var s string
//	if err := json.Unmarshal(data, &s); err != nil {
//		return err
//	}
//	*m = MyAge(MyAgeFromString(s)) // 自定义解析逻辑
//	return nil
//}
//
////func (m MyAge) MarshalJSON() ([]byte, error) {
////	return json.Marshal(m.String()) // 自定义序列化逻辑
////}
//
//func MyAgeFromString(s string) int {
//	// 实现从字符串到整型的转换逻辑
//	return len(s) // 示例转换：字符串长度转换为年龄（仅为示例）
//}
//
//func (m MyAge) String() string {
//	// 实现从 int 到字符串的转换逻辑
//	return fmt.Sprintf("%d", m) // 直接返回整数的字符串表示（仅为示例）
//}
//
//func main() {
//	jsonStr := `{"name": "John", "age": "30"}`
//	var p Person
//	err := json.Unmarshal([]byte(jsonStr), &p)
//	if err != nil {
//		panic(err)
//	}
//	fmt.Printf("%+v\n", p) // 查看结果
//}
